In the context of internetworking, routing is the coordinated transfer of information from a source to a destination via a router. Routers with the capability to forward data packets between subnetworks are referred to as intermediate systems (ISs). Intermediate systems may be classified as intra-domain ISs, i.e., those which can communicate within routing domains, and inter-domain ISs which can communicate both within and between routing domains. A routing domain, or autonomous system, can be considered to be a part of an inter-network that is regulated under common administrative authority.
A key component of routing is determination of optimal routing paths for data packets. Thereafter a second component, which may be referred to as “switching”, comprises transporting packets through the internetwork. Determination of optimal routing paths relies on one or more routing protocols to provide and update a routing database, or route table, for each router in a network. Depending on the particular routing protocol(s) used, various metrics are involved in building the routing database. Such metrics are well known in the art.
Dynamic routing protocols may be interior or exterior with respect to a given autonomous system (AS). Conventionally, interior routing protocols are used for routing within a routing domain or AS (intra-AS). Exterior routing protocols exchange routing information between routing domains (inter-AS). Border Gateway protocol (BGP) is a path-vector routing protocol that is widely used in internetwork routing (see, for example, RFC 1771, A Border Gateway Protocol 4 (BGP-4), Y Rekhter and T. Li, 1995). BGP performs both intra-domain and inter-domain routing in networks. A primary function of BGP is to exchange routing information with other BGP systems (peers). BGP's main functions include receiving routes from BGP peers, maintaining the routes in a routing table, applying routing policy specific to the router/AS, transmitting routing updates to other BGP systems, and computing optimal routing paths based on routing metrics. Other BGP functions like maintaining routing sessions (TCP/IP), route aggregation, route flap dampening, etc, are well known in the art.
Prior art routers typically run BGP on a single processor. The computation requirements of main BGP functions increase linearly with the number of peers. BGP doesn't computationally scale well on a single CPU with an increasing number of peers. In prior art systems, accommodation of increasing numbers of peer routers relies on reconfiguring the network by the meshing of multiple separate routers. This approach has a number of drawbacks, including the requirement for considerable increases in network management. A truly scalable BGP should be able to distribute the computational load of the protocol on multiple CPUs.
Another disadvantage of running BGP on a single CPU is that it has a single point of failure. Any local failure results in peer routing sessions dying. Whenever routing sessions fail peers withdraw routes through the local router. When the routes through the local router get withdrawn from all peers, the local router essentially becomes “invisible” to the rest of the network. It no longer gets traffic directed to it for forwarding purposes. BGP running on a single CPU system is not fault-tolerant. In a fault tolerant implementation of BGP, the routing information on the local router and peer router is not lost due to a single point of failure on the local router. A single point of failure on the local router will not result in the router becoming “invisible” to the rest of the network.
As demand for Internet usage continues to expand, there is a need for highly scalable routers having the capacity to handle greatly increased data flow. Scalable routers such as those of the instant invention, are characterized as having a large number of interfaces and a large number of peers. In order to accommodate such large numbers of peers, it is necessary to provide a plurality of processors and to distribute the computational load associated with the large number of protocol peers over the plurality of processors. Running multiple instances of BGP on a multi-processor router not only allows for scalability of the router, but also provides fault-tolerance. Configuring a single router also eases network management.
In order to implement a router running a plurality of instances of BGP, the inventors of the instant application have developed a novel version of BGP, which is referred to herein as router-distributed BGP (rdBGP). Furthermore, in prior art systems and methods, BGP fault tolerance in a given router was not available, due to the fact that a single instance of BGP was running on that router. In contrast, a multi-processor, scalable router of the invention which runs a plurality of BGP instances concurrently, provides for fault tolerance of that router, as will be described herein below.
Scalable routers can also be logically partitioned into logical router entities also know as virtual routers that run independently, sharing the same physical router's resources. We shall use the terms router and virtual router interchangeably herein.